package utils;

import lombok.extern.slf4j.Slf4j;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * 文件操作工具类
 */
@Slf4j
public class FileUtils {
    
    /**
     * 读取文件内容
     */
    public static String readFile(String filePath) {
        try {
            // 确保目录存在
            createDirectoryIfNotExists(filePath);
            
            if (!Files.exists(Paths.get(filePath))) {
                return null;
            }
            
            return new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);
        } catch (IOException e) {
            log.error("读取文件失败: filePath={}, error={}", filePath, e.getMessage());
            return null;
        }
    }
    
    /**
     * 写入文件内容
     */
    public static boolean writeFile(String filePath, String content) {
        try {
            // 确保目录存在
            createDirectoryIfNotExists(filePath);
            
            Files.write(Paths.get(filePath), content.getBytes(StandardCharsets.UTF_8));
            return true;
        } catch (IOException e) {
            log.error("写入文件失败: filePath={}, error={}", filePath, e.getMessage());
            return false;
        }
    }
    
    /**
     * 创建目录（如果不存在）
     */
    private static void createDirectoryIfNotExists(String filePath) {
        try {
            java.io.File file = new java.io.File(filePath);
            java.io.File parentDir = file.getParentFile();
            if (parentDir != null && !parentDir.exists()) {
                parentDir.mkdirs();
            }
        } catch (Exception e) {
            log.error("创建目录失败: filePath={}, error={}", filePath, e.getMessage());
        }
    }
    
    /**
     * 检查文件是否存在
     */
    public static boolean exists(String filePath) {
        return Files.exists(Paths.get(filePath));
    }
    
    /**
     * 删除文件
     */
    public static boolean deleteFile(String filePath) {
        try {
            return Files.deleteIfExists(Paths.get(filePath));
        } catch (IOException e) {
            log.error("删除文件失败: filePath={}, error={}", filePath, e.getMessage());
            return false;
        }
    }
} 